www.gusucode.com > RQCMS PHP文章管理系统 v2.3PHP源码程序 > RQCMS PHP文章管理系统 v2.3/rqcms_v2.3/rqcms_v2.3/core/include/tag.php
<?php // 检查提交Tag是否符合逻辑 function checktag($tag) { $tag = str_replace(',', ',', $tag); if (strrpos($tag, ',')) { $result .= '关键字中不能含有“,”或“,”字符<br />'; return $result; } if(strlen($tag) > 15) { $result .= '关键字不能超过15个字符<br />'; return $result; } } //更改tag function modtag($oldtag,$newtag,$aid) { global $DB; $oldarr=array(); $newarr=array(); if($oldtag) $oldarr=explode(',',$oldtag); if($newtag) $newarr=explode(',',$newtag); $delold=array_diff($oldarr,$newarr); $addnew=array_diff($newarr,$oldarr); if($delold) { foreach($delold as $tag) { $aids=gettagids($tag); if($aids) { $aidsarr=explode(',',$aids); foreach($aidsarr as $k=>$temp) { if($temp==$aid) unset($aidsarr[$k]); } $aidsnew=''; if($aidarr) $aidsnew=implode(',',$aidsarr); $DB->query("update ".DB_PREFIX."tag set aids='$aidsnew' where tag='$tag'"); } } } if($addnew) { foreach($addnew as $tag) { $aids=gettagids($tag); if($aids==null) { $DB->query("insert into ".DB_PREFIX."tag (`tag`,`aids`) values ('$tag','$aid')"); } else { if($aids=='') $aids=$aid; else { $aidsarr=explode(',',$aids); $aidsarr[]=$aid; } $aidsnew=implode(',',$aidsarr); $DB->query("update ".DB_PREFIX."tag set aids='$aidsnew' where tag='$tag'"); } } } //注释 20150711 ,$DB->query("delete from ".DB_PREFIX."tag where aids=''"); } //删除Tag function removealltag($tagname) { global $DB; $aids=gettagids($tagname); if($aids) { $query=$DB->query('Select tag,aid from '.DB_PREFIX."article where aid in ($aids) "); while($result=$DB->fetch_array($query)) { $tagstr=$result['tag']; $aid=$result['aid']; $newtagstr=''; $oldtagarr=explode(',',$tagstr); foreach($oldtagarr as $oldtag) { if($oldtag!=$tagname) $newtagstr.=','.$oldtag; } if($newtagstr) { $newtagstr=substr($newtagstr,1); } $DB->query('update '.DB_PREFIX."article set `tag`='$newtagstr' where `aid`='$aid'"); } } $DB->query("Delete from ".DB_PREFIX."tag where tag='$tagname'"); } function cleartag($tagname) { $tagname=trim($tagname); $trim=array('/','*','$','-',';','#','"'); foreach($trim as $tr) $tagname=str_replace($tr,'',$tagname); if(preg_match('/[a-zA-Z ]*/ui', $tagname)) { $tagname=ucwords(strtolower($tagname)); } return $tagname; } function rebuildtag($tagindex,$indexurl) { global $DB; $list=array(); if($tagindex==0) { $DB->query('TRUNCATE `'.DB_PREFIX.'tag`'); } $tagquery=$DB->query("Select tag,aid from ".DB_PREFIX."article where aid>$tagindex and tag!='' limit 5000"); while($data=$DB->fetch_array($tagquery)) { $tagarr=explode(',',$data['tag']); $newtag=array(); foreach($tagarr as $tagname) { $tagname=cleartag($tagname); if($tagname&&strlen($tagname)>1) { $list[$tagname][]=$data['aid']; $newtag[]=$tagname; } } $tagindex=$data['aid']; $newtag=implode(',',$newtag); if($newtag!=$data['tag']) { $newtag=addslashes($newtag); $DB->query("update ".DB_PREFIX."article set tag='$newtag' where aid=$tagindex"); } } $DB->query("DROP TABLE IF EXISTS `mtemp`"); if(count($list)==0) { $DB->query("create table `mtemp` select tag,GROUP_CONCAT(`aids`) as aids from `".DB_PREFIX."tag` GROUP BY tag"); $DB->query('TRUNCATE `'.DB_PREFIX.'tag`'); $DB->query("insert into ".DB_PREFIX."tag (`tag`,`aids`) select tag,aids from mtemp"); Jump('tag升级完成',$indexurl); } $sql="CREATE TABLE `mtemp` (`tag` varchar(20) NOT NULL,`aids` varchar(500) NOT NULL) ENGINE=MEMORY DEFAULT CHARSET=utf8;"; $DB->query($sql); foreach($list as $tagname=>$data) { $aids=implode(',',$data); $tagname=addslashes($tagname); if(strlen($aids)>500) { $DB->query("insert into `".DB_PREFIX."tag` (`tag`,`aids`) values ('$tagname','$aids')"); } else { $DB->query("insert into `mtemp` (`tag`,`aids`) values ('$tagname','$aids')"); } } $DB->query("insert into ".DB_PREFIX."tag (`tag`,`aids`) select tag,aids from mtemp"); $DB->query("DROP TABLE IF EXISTS `mtemp`"); Jump('继续升级tag中,下次更新文章id'.$tagindex,$indexurl."&tagindex=$tagindex"); } //得到ids function gettagids($tagname) { global $DB; $tagsql="SELECT aids FROM ".DB_PREFIX."tag WHERE tag='$tagname' "; $aids=null; $tagarr=$DB->fetch_first($tagsql); if($tagarr) { $aids= $tagarr['aids']; } return $aids; }